package cn.demoncat.util.lang;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.function.Supplier;

/**
 * 异常工具
 * 
 * @author 延晓磊
 *
 * @since 2018年12月14日
 */
public class ExceptionUtil {
	
	/**
	 * 获取异常堆栈跟踪信息
	 * 
	 * @param ex
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年12月14日
	 */
	public static String getTrace(Throwable ex) {
		// 创建输出流
		StringWriter sw = new StringWriter();
		// 输出异常跟踪
		ex.printStackTrace(new PrintWriter(sw));
		// 转换为字符串
		return sw.toString();
	}

	/**
	 * 获取结果
	 *
	 * @param supplier
	 * @param <T>
	 * @return	抛异常时返回 null
	 *
	 * @author 延晓磊
	 * @since 2022年08月01日
	 */
	public static <T>T get(Supplier<T> supplier){
		try {
		 	return supplier.get();
		}catch (Exception e){
		   return null;
		}
	}
}
